package com.hemerasolutions.v2trainer.component.interfaces.detail;

import java.util.List;

import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;

import org.primefaces.event.TransferEvent;
import org.primefaces.model.DualListModel;

import com.hemerasolutions.v2trainer.component.interfaces.BaseComponentInterface;
import com.hemerasolutions.v2trainer.component.interfaces.list.ModalityIZListCompInterface;
import com.hemerasolutions.v2trainer.component.interfaces.table.ExerciseTableCompInterface;
import com.hemerasolutions.v2trainer.delegate.interfaces.ModalityDetailDelegateInterface;
import com.hemerasolutions.v2trainer.model.exercise.executions.Execution;
import com.hemerasolutions.v2trainer.model.modality.Modality;
import com.hemerasolutions.v2trainer.model.modality.VersionableModality;
import com.hemerasolutions.v2trainer.model.training.TrainingType;
import com.hemerasolutions.v2trainer.model.unit.volume.VolumeType;
import com.hemerasolutions.v2trainer.service.interfaces.ModalityServiceInterface;

public interface ModalityDetailsCompInterface extends BaseComponentInterface {


	public abstract void setModality(Modality modality);

	public abstract Modality getModality();

	
	public abstract void refresh();

	public abstract void setExerciseTableComp(ExerciseTableCompInterface exerciseTableComp);

	public abstract ExerciseTableCompInterface getExerciseTableComp();

	public abstract void setModalityIZList(ModalityIZListCompInterface modalityIZList);

	public abstract ModalityIZListCompInterface getModalityIZList();

	public abstract void setModalityService(ModalityServiceInterface modalityService);

	public abstract ModalityServiceInterface getModalityService();

	public abstract void setNewTrainingTypeValue(TrainingType newTrainingTypeValue);

	public abstract TrainingType getNewTrainingTypeValue();

	public abstract void setTrainingTypes(List<TrainingType> trainingTypes);

	public abstract List<TrainingType> getTrainingTypes();

	public abstract void setVolumes(DualListModel<VolumeType> volumes);

	public abstract void setExecutions(DualListModel<Execution> executions);

	public abstract DualListModel<VolumeType> getVolumes();

	public abstract DualListModel<Execution> getExecutions();

	public abstract void loadModalityTrainingType();

	public abstract void trainingTypeChanged();

	public abstract void onTrainingTypeChange(ValueChangeEvent e);

	public abstract void onChangeExecution(TransferEvent ev);

	public abstract void onChangeVolume(TransferEvent ev);

	VersionableModality getVersionableModality();

	void setVersionableModality(VersionableModality versionableModality);

	void onVersionChanged(ValueChangeEvent e);

	ModalityDetailDelegateInterface getDelegate();

	void setDelegate(ModalityDetailDelegateInterface delegate);

	void saveModality(ActionEvent ev);

	void createModality(ActionEvent ev);

	void cancelChange();

	void toIntensityModality();


}
